/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.com.losalpes.marketplace.pirfq.entities;

import co.com.losalpes.marketplace.pirfq.bos.CotizacionBO;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author marketplace
 */
@SuppressWarnings({"serial", "unused", "unchecked"})
@Entity
@NamedQueries({
    @NamedQuery(name = "getAllcotizaciones", query = "SELECT c FROM Cotizacion c "),
    @NamedQuery(name = "getCotizacionPorNumero", query = "SELECT C FROM Cotizacion C WHERE C.numero = :numero"),
    @NamedQuery(name = "getCotizacionComercioEstado", query = "SELECT c FROM Cotizacion c WHERE c.nit_comercio = :id AND c.estado = :estado"),
    @NamedQuery(name = "getCotizacionByID", query = "SELECT c FROM Cotizacion c WHERE c.id = :id")
})
public class Cotizacion implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    @Column
    private String numero;
    @Column
    private int cantidad;
    @Column
    private long precio_maximo;
    @Column
    @Temporal(TemporalType.DATE)
    private Date fecha_entrega;
    @Column
    @Temporal(TemporalType.DATE)
    private Date fecha_cierre;
    // TODO:
    @Column
    private String nit_comercio;
    @Column
    private String nombre_producto;
    @Column
    private String categoria_producto;
    @Column
    private String estado;
    @Column
    private String nit_fabricante_seleccionado;

    public Cotizacion() {
    }

    public Cotizacion(int cantidad, long precio_maximo, Date fecha_entrega, Date fecha_cierre, String nit_comercio, String nombre_producto, String tipo_producto) {
        this.cantidad = cantidad;
        this.precio_maximo = precio_maximo;
        this.fecha_entrega = fecha_entrega;
        this.fecha_cierre = fecha_cierre;
        this.nit_comercio = nit_comercio;
        this.nombre_producto = nombre_producto;
        this.categoria_producto = tipo_producto;
    }

    /**
     * BO Constructor
     */
    public Cotizacion(CotizacionBO cotizacionBO) {
        this.setCantidad(cotizacionBO.getCantidad());
        this.setCategoria_producto(cotizacionBO.getCategoria_producto());
        this.setEstado(cotizacionBO.getEstado());
        this.setFecha_cierre(cotizacionBO.getFecha_cierre());
        this.setFecha_entrega(cotizacionBO.getFecha_entrega());
        this.setId(cotizacionBO.getId());
        this.setNit_comercio(cotizacionBO.getNit_comercio());
        this.setNit_fabricante_seleccionado(cotizacionBO.getNit_fabricante_seleccionado());
        this.setNombre_producto(cotizacionBO.getNombre_producto());
        this.setNumero(cotizacionBO.getNumero());
        this.setPrecio_maximo(cotizacionBO.getPrecio_maximo());
    }

    /**
     * Converts the current entity to its BO
     *
     * @param Integer gets the bo tree in depth
     */
    public CotizacionBO toBO() {
        CotizacionBO cotizacionBO = new CotizacionBO();
        cotizacionBO.setCantidad(this.getCantidad());
        cotizacionBO.setCategoria_producto(this.getCategoria_producto());
        cotizacionBO.setEstado(this.getEstado());
        cotizacionBO.setFecha_cierre(this.getFecha_cierre());
        cotizacionBO.setFecha_entrega(this.getFecha_entrega());
        cotizacionBO.setId(this.getId());
        cotizacionBO.setNit_comercio(this.getNit_comercio());
        cotizacionBO.setNit_fabricante_seleccionado(this.getNit_fabricante_seleccionado());
        cotizacionBO.setNombre_producto(this.getNombre_producto());
        cotizacionBO.setNumero(this.getNumero());
        cotizacionBO.setPrecio_maximo(this.getPrecio_maximo());

        return cotizacionBO;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public int getCantidad() {
        return cantidad;
    }

    public void setCantidad(int cantidad) {
        this.cantidad = cantidad;
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    public Date getFecha_cierre() {
        return fecha_cierre;
    }

    public void setFecha_cierre(Date fecha_cierre) {
        this.fecha_cierre = fecha_cierre;
    }

    public Date getFecha_entrega() {
        return fecha_entrega;
    }

    public void setFecha_entrega(Date fecha_entrega) {
        this.fecha_entrega = fecha_entrega;
    }

    public String getNit_comercio() {
        return nit_comercio;
    }

    public void setNit_comercio(String nit_comercio) {
        this.nit_comercio = nit_comercio;
    }

    public String getNit_fabricante_seleccionado() {
        return nit_fabricante_seleccionado;
    }

    public void setNit_fabricante_seleccionado(String id_fabricante_seleccionado) {
        this.nit_fabricante_seleccionado = id_fabricante_seleccionado;
    }

    public String getNombre_producto() {
        return nombre_producto;
    }

    public void setNombre_producto(String nombre_producto) {
        this.nombre_producto = nombre_producto;
    }

    public String getNumero() {
        return numero;
    }

    public void setNumero(String numero) {
        this.numero = numero;
    }

    public long getPrecio_maximo() {
        return precio_maximo;
    }

    public void setPrecio_maximo(long precio_maximo) {
        this.precio_maximo = precio_maximo;
    }

    public String getCategoria_producto() {
        return categoria_producto;
    }

    public void setCategoria_producto(String categoria_producto) {
        this.categoria_producto = categoria_producto;
    }
}